var editroleWin;

function editrole(id, name) {
	if (editroleWin) {
		editroleWin = null;
	}

	var editroleForm = new Ext.FormPanel({
				id : 'editroleForm',
				labelWidth : 75, // label settings here cascade unless
				// overridden
				frame : false,
				bodyStyle : 'padding:5px 5px 0',
				width : 350,
				defaults : {
					width : 230
				},
				defaultType : 'textfield',

				items : [{
							xtype : 'hidden',
							name : 'rid',
							id : 'rid'
						}, {
							fieldLabel : '角色名称',
							id : 'rname',
							name : 'rname',
							emptyText : '请定义角色名称',
							allowBlank : false
						}, {
							fieldLabel : '唯一标识',
							id : 'rkey',
							name : 'rkey',
							emptyText : '请定义角色唯一标识',
							allowBlank : false
						}, {
							fieldLabel : '角色说明',
							xtype : 'textarea',
							id : 'rmemo',
							name : 'rmemo'
						}, {
							xtype : 'hidden',
							name : 'rrv',
							id : 'rrv',
							value : '1'
						}, {
							xtype : 'fieldset',
							id : 'rroleset',
							checkboxToggle : true,
							onCheckClick : function() {
								clickRoleSet('rroleset', 'vroleset');
							},
							title : '真实角色',
							autoHeight : true,
							defaultType : 'textfield',
							collapsed : false,
							width : 350,
							labelWidth : 65,
							animCollapse : true,
							defaults : {
								width : 230
							},
							items : [
									{
										fieldLabel : '组继承',
										xtype : 'checkbox',
										id : 'raccede1',
										name : 'raccede1'
									},
									{
										fieldLabel : '组继承',
										xtype : 'hidden',
										id : 'raccede',
										name : 'raccede',
										value : '0'
									},
									getGroupUserChkCombo('角色对象', 'objids',
											'objnames', 'objtypes', '', true),
									{
										xtype : 'hidden',
										id : 'objids',
										name : 'objids'
									}, {
										xtype : 'hidden',
										id : 'objnames',
										name : 'objnames'
									}, {
										xtype : 'hidden',
										id : 'objtypes',
										name : 'objtypes'
									}]
						}, {
							xtype : 'fieldset',
							id : 'vroleset',
							checkboxToggle : true,
							onCheckClick : function() {
								clickRoleSet('vroleset', 'rroleset');
							},
							title : '虚拟角色',
							autoHeight : true,
							defaultType : 'textfield',
							width : 350,
							labelWidth : 65,
							animCollapse : true,
							collapsed : true,
							defaults : {
								width : 230
							},
							items : [
									{
										xtype : 'hidden',
										name : 'rrvtype',
										value : 'U'
									},
									getWBComboStore('user-rating', '',
											'grating_', '对象级别', 'rrvrating',
											null, '0', true), {
										xtype : 'hidden',
										name : 'rrvrating',
										id : 'rrvrating',
										value : '0'
									}]
						}]
			});

	editroleForm.getForm().load({
				url : context + '/system/role.do?method=edit',
				params : {
					id : id
				},
				success : function(form, action) {
					var resultInfo = listSimpleJson(action.result.data);

					var rkey = resultInfo.get("rkey");

					/* 系统管理员角色唯一标识不可编辑 */
					if (rkey == 'admin') {
						Ext.getCmp("rkey").getEl().dom.readOnly = true;
					}

					/* 真实/虚拟角色 */
					var rrv = resultInfo.get("rrv");

					if (rrv == "0") {
						Ext.getCmp("vroleset").checkbox.dom.checked = true;
						Ext.getCmp("vroleset").expand();
						Ext.getCmp("rroleset").checkbox.dom.checked = false;
						Ext.getCmp("rroleset").collapse();
					} else if (rrv == "1") {
						Ext.getCmp("rroleset").checkbox.dom.checked = true;
						Ext.getCmp("rroleset").expand();
						Ext.getCmp("vroleset").checkbox.dom.checked = false;
						Ext.getCmp("vroleset").collapse();
					}
					
					/* 角色组继承 */
					var raccede = resultInfo.get("raccede");

					if (raccede == "1") {
						Ext.getCmp("raccede1").el.dom.checked = true;
					}
				},
				failure : function(form, action) {
					Ext.Msg.alert('初始化系统角色信息失败');
				}
			});

	editroleWin = new Ext.Window({
				renderTo : Ext.getBody(),
				layout : 'fit',
				width : 400,
				height : 500,
				title : '角色编辑',
				resizable : false,
				plain : true,
				modal : true,

				items : [editroleForm],

				buttons : [{
							id : 'roleEditButton',
							text : '提 交',
							handler : handleUpdateRole
						}, {
							text : '关 闭',
							handler : function() {
								editroleWin.close();
								editroleWin = null;
							}
						}]
			});

	editroleWin.show(this);
}

function clickRoleSet(fset, sset) {
	// thizz[thizz.checkbox.dom.checked ? 'expand' : 'collapse']();
	if (Ext.getCmp(fset).checkbox.dom.checked) {
		Ext.getCmp(fset)['expand']();
		Ext.getCmp(sset)['collapse']();
	} else if (!Ext.getCmp(fset).checkbox.dom.checked) {
		Ext.getCmp(fset)['collapse']();
		Ext.getCmp(sset)['expand']();
	}
}

function handleUpdateRole() {
	if (Ext.getCmp("editroleForm").getForm().isValid()) {
		if (Ext.getCmp("rroleset").checkbox.dom.checked
				&& Ext.getCmp("objids").getValue() == '') {
			Ext.Msg.alert('提示', '请选择角色对象！');
		} else if (Ext.getCmp("vroleset").checkbox.dom.checked
				&& Ext.getCmp("rrvrating").getValue() == '') {
			Ext.Msg.alert('提示', '请选择角色对象级别！');
		} else {
			if (Ext.getCmp("objids").getValue() != ''
					&& Ext.getCmp("objnames").getValue() != ''
					&& Ext.getCmp("objtypes").getValue() != '') {
				countRoleObjectItem(Ext.getCmp("rid").getValue(), Ext
								.getCmp("objids").getValue(), Ext
								.getCmp("objnames").getValue(), Ext
								.getCmp("objtypes").getValue(), Ext
								.getCmp("editroleForm"));
			}

			if (Ext.getCmp("rroleset").checkbox.dom.checked) {
				Ext.getCmp("rrv").setValue('1');
			} else if (Ext.getCmp("vroleset").checkbox.dom.checked) {
				Ext.getCmp("rrv").setValue('0');
			}

			if (Ext.getCmp("raccede1").el.dom.checked) {
				Ext.getCmp("raccede").setValue('1');
			}else{
				Ext.getCmp("raccede").setValue('0');
			}

			Ext.getCmp("roleEditButton").setDisabled(true);

			Ext.MessageBox.wait('提交保存过程中...');

			Ext.getCmp("editroleForm").getForm().submit({
						url : context + '/system/role.do?method=update',
						method : "POST",
						success : function(form, action) {
							Ext.MessageBox.hide();
							Ext.getCmp("roleEditButton").setDisabled(false);
							Ext.Msg.alert('提示', '已成功更新角色信息');
							reloadroleListStore();
						},
						failure : function(form, action) {
							Ext.MessageBox.hide();
							Ext.getCmp("roleEditButton").setDisabled(false);
							if (action.result.errCode == '-1') {
								Ext.Msg.alert('提示', '更新角色信息发生错误！');
							} else if (action.result.errCode == '-2') {
								Ext.Msg.alert('提示', '角色唯一标识重复！');
							} else if (action.result.errCode == '-3') {
								Ext.Msg.alert('提示', '角色唯一标识不能为空！');
							} else {
								Ext.Msg.alert('提示', '未知的错误异常！');
							}
						}
					});
		}
	}
}